/*!
* @license
* Copyright 2018 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { GenericBucketBucketInfo } from './genericBucketBucketInfo';
import { GenericMetric } from './genericMetric';

/**
 * A bucket of facet results
 */
export class GenericBucket {
    /**
     * The bucket label
     */
    label?: string;
    /**
     * The filter query you can use to apply this facet
     */
    filterQuery?: string;
    /**
     * An optional field for additional display information
     */
    display?: any;
    /**
     * An array of buckets and values
     */
    metrics?: GenericMetric[];
    /**
     * Additional list of nested facets
     */
    facets?: any[];
    bucketInfo?: GenericBucketBucketInfo;

    constructor(input?: any) {

        if (input) {
            Object.assign(this, input);
            if (input.metrics) {
                this.metrics = input.metrics.map((item: any) => {
                    return new GenericMetric(item);
                });
            }
            this.bucketInfo = input.bucketInfo ? new GenericBucketBucketInfo(input.bucketInfo) : undefined;
        }
    }

}
